<form class="filter-bar">
  <FreetextFilter
    @onsearch={{action onsearch}}
    @value={{search}}
    @placeholder="Search"
  />
  <div class="filters">
    <PopoverSelect
      class="type-status"
      @position="left"
      @onchange={{action onfilter.status}}
      @multiple={{true}}
    as |components|>
      <BlockSlot @name="selected">
        <span>
          Health Status
        </span>
      </BlockSlot>
      <BlockSlot @name="options">
{{#let components.Optgroup components.Option as |Optgroup Option|}}
        <Option class="value-passing" @value="passing" @selected={{contains 'passing' filter.statuses}}>Passing</Option>
        <Option class="value-warning" @value="warning" @selected={{contains 'warning' filter.statuses}}>Warning</Option>
        <Option class="value-critical" @value="critical" @selected={{contains 'critical' filter.statuses}}>Failing</Option>
        <Option class="value-empty" @value="empty" @selected={{contains 'empty' filter.statuses}}>No checks</Option>
{{/let}}
      </BlockSlot>
    </PopoverSelect>
{{#if (gt sources.length 0)}}
    <PopoverSelect
      class="type-source"
      @position="left"
      @onchange={{action onfilter.source}}
      @multiple={{true}}
    as |components|>
      <BlockSlot @name="selected">
        <span>
          Source
        </span>
      </BlockSlot>
      <BlockSlot @name="options">
{{#let components.Optgroup components.Option as |Optgroup Option|}}
{{#each sources as |source|}}
        <Option class={{source}} @value={{source}} @selected={{contains source filter.sources}}>{{source}}</Option>
{{/each}}
{{/let}}
      </BlockSlot>
    </PopoverSelect>
{{/if}}
  </div>
  <div class="sort">
    <PopoverSelect
      class="type-sort"
      data-test-sort-control
      @position="right"
      @onchange={{action onsort}}
      @multiple={{false}}
    as |components|>
      <BlockSlot @name="selected">
        <span>
          {{#let (from-entries (array
                (array "Name:asc" "A to Z")
                (array "Name:desc" "Z to A")
                (array "Status:asc" "Unhealthy to Healthy")
                (array "Status:desc" "Healthy to Unhealthy")
              ))
            as |selectable|
          }}
            {{get selectable sort}}
          {{/let}}
        </span>
      </BlockSlot>
      <BlockSlot @name="options">
{{#let components.Optgroup components.Option as |Optgroup Option|}}
        <Optgroup @label="Health Status">
          <Option @value="Status:asc" @selected={{eq "Status:asc" sort}}>Unhealthy to Healthy</Option>
          <Option @value="Status:desc" @selected={{eq "Status:desc" sort}}>Healthy to Unhealthy</Option>
        </Optgroup>
        <Optgroup @label="Service Name">
          <Option @value="Name:asc" @selected={{eq "Name:asc" sort}}>A to Z</Option>
          <Option @value="Name:desc" @selected={{eq "Name:desc" sort}}>Z to A</Option>
        </Optgroup>
{{/let}}
      </BlockSlot>
    </PopoverSelect>
  </div>
</form>
